<?php
//封装的php文件
//连接数据库的方法
function connectDataBase($dbIP, $dbName, $dbPass, $sel_dbName){
    $connectDB = mysql_connect($dbIP, $dbName, $dbPass);
    if ($connectDB){
        $selectDB = mysql_select_db($sel_dbName);
        if ($selectDB){
            mysql_query("set names utf8");
            return true;
// echo "数据库选择成功";
        }else{
            echo "数据库选择失败";
        }
    }else{
        echo "数据库服务器连接失败";
    }
}
//php的随机函数
function randNum($min,$max){
    $a = range($min,$max);
    shuffle($a);
    return $a[0];
}
//

//get 请求方式 抓包;
function httpGet($url) {
    // http://blog.sina.com.cn/s/blog_640738130100tsig.html
    // 初始化对象
    $curl = curl_init();
    // curl_setopt() 设置会话参数
    // CURLOPT_RETURNTRANSFER 结果保存到字符串中
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
    // CURLOPT_TIMEOUT 超时秒数
    curl_setopt($curl, CURLOPT_TIMEOUT, 100);
    // 注意:
    // 为保证第三方服务器与微信服务器之间数据传输的安全性，所有微信接口采用https方式调用，必须使用下面2行代码打开ssl安全校验。
    // 如果在部署过程中代码在此处验证失败，请到 http://curl.haxx.se/ca/cacert.pem 下载新的证书判别文件。
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, true);
    curl_setopt($curl, CURLOPT_URL, $url);

    // 执行会话
    $res = curl_exec($curl);
    curl_close($curl);

    return $res;
}

//获取acess_token 的方法;
function getAcess_Token($appId,$appSecret){
    $url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={$appId}&secret={$appSecret}";
    $str = httpGet($url);
    //把JSON字符串转化为数组,加true,是数组,不加 true是对象;
    return json_decode($str,true)['access_token'];//返回access_token字符串;
}

//存入数据库;
//appid app秘钥 数据库所在地址 登录数据库的账号名 登录数据库的密码 数据库名字 表名
function getSafeAccessToken($appId,$appSecret,$mysqlIp,$mysqlAdmin,$mysqlPass,$selDB,$formName){
    $connectDB = mysql_connect($mysqlIp,$mysqlAdmin,$mysqlPass);
    mysql_select_db($selDB);
    mysql_query("set names utf8");
    $sql = "SELECT * FROM ".$formName;
    $result = mysql_query($sql);
    if(mysql_num_rows($result)>0){
        $arr = mysql_fetch_assoc($result);
        $oldTime = $arr["time"];
        $newTime = time();
        if($newTime - $oldTime > 7200){
            $token = getAcess_Token($appId,$appSecret);
            $sql = "UPDATE ".$formName." set access=".$token.",  time=".$newTime;
            mysql_query($sql);
        }else{
            $token = $arr["access"];
        }
    }else{
        //第一次时候在数据库中找不到
        $token = getAcess_Token($appId,$appSecret);
        $time = time();
        $sql = "INSERT INTO ".$formName." (access,time) VALUES ('{$token}','{$time}')";
        mysql_query($sql);
    }
    return $token;
}

//抓取post请求的网址,抓取上面的内容信息;
function httpPost($data,$url){
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
    curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (compatible; MSIE 5.01; Windows NT 5.0)');
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
    curl_setopt($ch, CURLOPT_AUTOREFERER, 1);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    $tmpInfo = curl_exec($ch);
    if (curl_errno($ch)) {
        return curl_error($ch);
    }
    curl_close($ch);
    return $tmpInfo;
}
?>
